home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
-
- # postinst based heavily on the postinst of libssl0.9.8, courtesy of
- # Christoph Martin.
-
- . /usr/share/debconf/confmodule
-
- set -e
-
- # element() is a helper function for file-rc:
- element() {
- local element list IFS
-
- element="$1"
-
- [ "$2" = "in" ] && shift
- list="$2"
- [ "$list" = "-" ] && return 1
- [ "$list" = "*" ] && return 0
-
- IFS=","
- set -- $list
- case $element in
- "$1"|"$2"|"$3"|"$4"|"$5"|"$6"|"$7"|"$8"|"$9")
- return 0
- esac
- return 1
- }
-
- # filerc (runlevel, service) returns /etc/init.d/service, if service is
- # running in $runlevel:
- filerc() {
- local runlevel basename
- runlevel=$1
- basename=$2
- while read LINE
- do
- case $LINE in
- \#*|"") continue
- esac
-
- set -- $LINE
- SORT_NO="$1"; STOP="$2"; START="$3"; CMD="$4"
- [ "$CMD" = "/etc/init.d/$basename" ] || continue
-
- if element "$runlevel" in "$START" || element "S" in "$START"
- then
- echo "/etc/init.d/$basename"
- return 0
- fi
- done < /etc/runlevel.conf
- echo ""
- }
-
- installed_services() {
- check="$@"
-
- # Only get the ones that are installed, and configured
- check=$(dpkg -s $check 2> /dev/null | egrep '^Package:|^Status:' | awk '{if ($1 ~ /^Package:/) { package=$2 } else if ($0 ~ /^Status: .* installed$/) { print package }}')
-
- # some init scripts don't match the package names
- check=$(echo $check | \
- sed -e's/\bapache2-common\b/apache2/g' \
- -e's/\bat\b/atd/g' \
- -e's/\bdovecot-common\b/dovecot/g' \
- -e's/\bdante-server\b/danted/g' \
- -e's/\bexim4-base\b/exim4/g' \
- -e's/\bheartbeat-2\b/heartbeat/g' \
- -e's/\bhylafax-server\b/hylafax/g' \
- -e's/\bpartimage-server\b/partimaged/g' \
- -e's/\bsasl2-bin\b/saslauthd/g' \
- )
-
- for service in $check; do
- idl="/etc/init.d/${service}"
- if [ -n "$idl" ] && [ -x $idl ]; then
- services="$service $services"
- else
- echo "WARNING: init script for $service not found." >&2
- fi
- done
- echo "$services"
- }
-
- if [ "$1" = "configure" ]
- then
- if [ ! -z "$2" ]; then
- if dpkg --compare-versions "$2" lt 1.1.0; then
- db_version 2.0
-
- echo -n "Checking for services that may need to be restarted..."
-
- check="apache2-common at bayonne cherokee courier-authdaemon"
- check="$check cron cups"
- check="$check dante-server diald dovecot-common exim exim4-base"
- check="$check fcron fireflier-server freeradius gdm heartbeat"
- check="$check heartbeat-2 hylafax-server iiimf-server inn2"
- check="$check kannel linesrv linesrv-mysql lsh-server"
- check="$check muddleftpd netatalk nuauth partimage-server"
- check="$check perdition pgpool popa3d postgresql-7.4"
- check="$check postgresql-8.1 postgresql-8.2 proftpd pure-ftpd"
- check="$check pure-ftpd-ldap pure-ftpd-mysql"
- check="$check pure-ftpd-postgresql racoon samba sasl2-bin"
- check="$check sfs-server solid-pop3d squid squid3 tac-plus"
- check="$check vsftpd wu-ftpd wzdftpd xrdp yardradius yaws"
-
- if ! who | awk '{print $2}'|grep -q ':[0-9]'; then
- check="$check kdm wdm xdm"
- fi
-
- echo "Checking init scripts..."
- services=$(installed_services "$check")
- if [ -n "$services" ]; then
- db_reset libpam0g/restart-services
- db_set libpam0g/restart-services "$services"
- question_priority="critical"
- # Do not prompt when we're running in the upgrade-manager
- # and only default services need restarting.
- nondefault_services=$(echo "$services" | sed \
- -e's/\batd\b//g' \
- -e's/\bcron\b//g' \
- -e's/\bcups\b//g' \
- -e's/\bgdm\b//g' \
- -e's/\bkdm\b//g' \
- -e's/\bsamba\b//g' \
- -e's/^ *//g')
- if [ -n "$RELEASE_UPGRADE_IN_PROGRESS" ] && [ -z "$nondefault_services" ]; then
- question_priority="medium"
- fi
- db_input "$question_priority" libpam0g/restart-services || true
- db_go || true
- db_get libpam0g/restart-services
-
- if [ "x$RET" != "x" ]
- then
- services=$RET
- else
- services=""
- fi
- echo
- if [ "$services" != "" ]; then
- echo "Restarting services possibly affected by the upgrade:"
- failed=""
- rl=$(runlevel | sed 's/.*\ //')
- for service in $services; do
- idl="invoke-rc.d ${service}"
-
- case "$service" in
- gdm)
- echo -n " $service: reloading..."
- if $idl reload > /dev/null 2>&1; then
- echo "done."
- else
- echo "FAILED! ($?)"
- failed="$service $failed"
- fi
- continue
- ;;
- esac
- echo -n " $service: stopping..."
- $idl stop > /dev/null 2>&1 || true
- sleep 1
- echo -n "starting..."
- if $idl start > /dev/null 2>&1; then
- echo "done."
- else
- echo "FAILED! ($?)"
- failed="$service $failed"
- fi
- done
- echo
- if [ -n "$failed" ]; then
- db_subst libpam0g/restart-failed services "$failed"
- db_input critical libpam0g/restart-failed || true
- db_go || true
- else
- echo "Services restarted successfully."
- fi
- echo
- fi
- else
- echo "Nothing to restart."
- fi
-
- if who | awk '{print $2}' | grep -q ':[0-9]'; then
- dms=""
- for service in kdm wdm xdm; do
- case "$services" in
- *$service*) ;;
- *) dms="$dms $service"
- esac
- done
- services=$(installed_services "$dms")
- if [ -n "$services" ]; then
- if [ -n "$RELEASE_UPGRADE_IN_PROGRESS" ] \
- && [ -x /usr/share/update-notifier/notify-reboot-required ]
- then
- /usr/share/update-notifier/notify-reboot-required
- else
- db_input critical libpam0g/xdm-needs-restart || true
- db_go || true
- fi
- fi
- fi
-
- # Shut down the frontend, to make sure none of the
- # restarted services keep a connection open to it
- db_stop
- fi # end upgrading and $2 lt 1.1.0
- fi # Upgrading
- fi
-
- # Automatically added by dh_makeshlibs
- if [ "$1" = "configure" ]; then
- ldconfig
- fi
- # End automatically added section
-
-
-